//
//  BPFMDBHelper.h
//  BP
//
//  Created by 404 on 2020/1/8.
//  Copyright © 2020年 404. All rights reserved.
//

#import <Foundation/Foundation.h>
#import <FMDB/FMDB.h>
NS_ASSUME_NONNULL_BEGIN
@interface BPFMDBHelper : NSObject
/**
 判读数据库是否打开

 @return 数据库打开状态
 */
+ (BOOL)isDBOpened;

/**
 打开数据库

 @param path db path
 @return 数据库打开是否成功
 */
+ (BOOL)openDB:(NSString*)path;

/**
 关闭数据库
 */
+ (void)closeDB;

/**
 更新数据库

 @param sql sql语句
 @param arguments 参数
 @return 操作result
 */
+ (BOOL)executeUpdate:(NSString *)sql withArguments:(nullable NSArray *)arguments;

/**
 查询数据库

 @param sql 语句
 @param arguments 参数
 @param syncResultBlock resultSet
 */
+ (void)executeQuery:(NSString *)sql withArguments:(nullable NSArray *)arguments
          syncResult:(void (^)(FMResultSet *resultSet))syncResultBlock;

/**
 获取数据库执行block

 @param transactionBlock 执行block
 */
+ (void)executeTransaction:(void (^)(FMDatabase *db, BOOL *rollback))transactionBlock;

/**
 获取表版本号

 @param table table_name
 @return table_version
 */
+ (int)versionOfTable:(NSString *)table;

/**
 更新表结构

 @param table table_name
 @param version table_version
 @param updateTransaction 执行block
 @return result
 */
+ (BOOL)updateTable:(NSString *)table version:(int)version transaction:(BOOL (^)(FMDatabase *db))updateTransaction;

/**
 删除表

 @param table talbe_name
 @return result
 */
+ (BOOL)dropTable:(NSString *)table;

/**
 判断表中是否包含某个属性

 @param columnName 列名
 @param tableName table_name
 @return exist or not
 */
+ (BOOL)isColumnExist:(NSString *)columnName inTable:(NSString *)tableName;

/**
 判断表是否存在

 @param tableName table_name
 @return exist or not
 */
+ (BOOL)isExistTableWithName:(NSString *)tableName;
@end
NS_ASSUME_NONNULL_END
